package com.example.demo5;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //组件全局
    private EditText ed_uname,ed_unumber;
    private Button btn_add,btn_query,btn_modify,btn_clear;
    private TextView con,title;
    //数据库全局
    private MyDbHelper myHelper;
    //创建数据库对象
    private SQLiteDatabase db;
    //创建数据存储
    private ContentValues values;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        QueryDtata();   //打开时先查询一次数据
    }
    public void initView() {
        //初始化组件
        ed_uname=findViewById(R.id.name);  //姓名文本框
        ed_unumber=findViewById(R.id.number);//手机号文本框
        btn_add=findViewById(R.id.add);     //添加
        btn_query=findViewById(R.id.query);     //查询
        btn_modify=findViewById(R.id.modify);   //修改
        btn_clear=findViewById(R.id.clear);     //清空
        title=findViewById(R.id.title);     //标题部分
        con=findViewById(R.id.content);     //内容部分

        btn_add.setOnClickListener(this);
        btn_query.setOnClickListener(this);
        btn_modify.setOnClickListener(this);
        btn_clear.setOnClickListener(this);
        //初始化数据库工具类
        myHelper = new MyDbHelper(this);
    }

    @Override
    public void onClick(View view) {
        //获取数据
        String uname=ed_uname.getText().toString().trim();
        String uphone=ed_unumber.getText().toString().trim();

        //判断是否为空
        if (TextUtils.isEmpty(uname))
        {
            Toast.makeText(this, "请输入姓名信息", Toast.LENGTH_SHORT).show();
        }else if (TextUtils.isEmpty(uphone))
        {
            Toast.makeText(this, "请输入电话信息", Toast.LENGTH_SHORT).show();
        }else
        {
            switch (view.getId())
            {
                case R.id.add:      //添加数据
                    AddDtata(uname,uphone);
                    break;
                case  R.id.query:      //查询所有数据
                    QueryDtata();
                    break;
                case R.id.modify:       //修改数据
                    ModifyDtata(uname,uphone);
                    break;
                case R.id.clear:       //清空所有数据
                    ClearDtata();
                    break;
            }
        }
    }
    //添加方法
    private void AddDtata(String uname,String uphone)
    {
        //获取可读写SQLiteDatabase对象
        db=myHelper.getWritableDatabase();
        values=new ContentValues();
        //讲数据添加到ContentValues对象中
        values.put("name",uname);
        values.put("phone",uphone);
        //向数据库添加数据
        db.insert("contacts",null,values);
        Toast.makeText(this, "成功添加了一条联系人信息！", Toast.LENGTH_SHORT).show();
        db.close();
    }
    //查询方法
    private void QueryDtata()
    {
        //获取可读写SQLiteDatabase对象
        db=myHelper.getReadableDatabase();
        /**
         * 参数1.表名，
         * 2.查询指定的列名如：（_id,uname,uphone）
         * 3.where后面的约束条件
         * 4.为where后面的值
         * 5.指定group by的列
         * 6.对group by后的结果进行约束
         * 7.指定查询结果的排序方式
         */
        Cursor cursor=db.query("contacts",null,null,null,
                null,null,null);
        if (cursor.getCount()==0)
        {
            title.setText("当前没有联系人数据");
        }else
        {
            title.setText("当前有["+cursor.getCount()+"]个联系人，信息如下");
        }
        //将获取到的数据以追加的形式添加到内容文本框中
        String result="";
        while (cursor.moveToNext()) //在表中移动指针
        {
            result+=cursor.getInt(0);
            result+=".姓名："+cursor.getString(1);
            result+=",手机号："+cursor.getString(2);
            result+="\n";
        }
        con.setText(result);
        cursor.close();
        db.close();
    }
    //修改方法
    private void ModifyDtata(String uname,String uphone)
    {
        //获取可读写SQLiteDatabase对象
        db=myHelper.getWritableDatabase();
        values=new ContentValues();
        //讲数据添加到ContentValues对象中
        values.put("name",uname);
        values.put("phone",uphone);
        //执行修改命令
        db.update("contacts",values,"name=?",new String[]{uname});
        Toast.makeText(this, "成功修改了一条联系人信息！", Toast.LENGTH_SHORT).show();
        db.close();
    }

    /*
    //删除一条方法
    private void delData(String uname)
    {
        db.delete("contacts","uanme=?",new String[]{uname});
        Toast.makeText(this, "成功删除了一条联系人信息！", Toast.LENGTH_SHORT).show();
    }
     */

    //清空方法
    private void ClearDtata()
    {
        //获取可读写SQLiteDatabase对象
        db=myHelper.getWritableDatabase();
        //执行删除命令
        db.delete("contacts",null,null);
        Toast.makeText(this, "以清空所有联系人信息！", Toast.LENGTH_SHORT).show();
        db.close();
        //清除后删除文本框中数据
        ed_uname.setText("");
        ed_unumber.setText("");
    }


    //创建了一个数据库帮助类
    class  MyDbHelper extends SQLiteOpenHelper{
        //创建数据库名和数据库版本
        public MyDbHelper(@Nullable Context context) {
            super(context, "mycontacts.db", null,1);
        }
        //只在创建数据库时，创建一次表
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table contacts(_id integer primary key autoincrement,name varchar(50) unique,phone varchar(20))");
        }

        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

        }
    }
}

